home *** CD-ROM | disk | FTP | other *** search
- /*=====[ The TesSeRact(TM) CXL User Interface Development System ]======*
- | Copyright (c) 1987-1990, Innovative Data Concepts. All Rights Reserved
- |
- | This Library is part of IDC's TesSeRact Development Tools product
- | line. For information about other IDC products, call 1-215-884-3373.
- *----------------------------------------------------------------------*
- | <TCXLmem.h> : Definitions and prototypes for TCXL memory subsystem.
- *-------------------------------[ Notes ]------------------------------*
- | 1) Refer to the EMS, XMS, VCPI and DPMI specifications for further
- | information.
- | 2) All pointers used by these functions are FAR pointers.
- *----------------------------------------------------------------------*
- | PGS : $Id: tcxlmem.h 5.51 90/10/01 00:00:00 MLM Release Locker: MLM $
- | $Log: tcxlmem.h $
- | Revision 5.51 90/10/01 00:00:00 MLM
- | TCXL 5.51
- |
- *======================================================================*/
- #ifndef _TCXLmem_
- # define _TCXLmem_ 1
- # ifndef _TCXLdef_
- # include <TCXLdef.h>
- # endif
- /*- Memory-flag bits ---------------------*/
- #define MEM_DPMI 0x01 /* DPMI installed */
- #define MEM_VCPI 0x02 /* VCPI installed */
- #define MEM_EMS 0x04 /* EMS installed */
- #define MEM_XMS 0x08 /* XMS installed */
- #define MEM_HMA 0x10 /* HMA installed */
-
- #define EMS_BadSoft 0x80 /*- EMS error-codes ----------------------*/
- #define EMS_BadHdw 0x81 /* NOTE: Error-codes above 0x8F are for */
- #define EMS_Busy 0x82 /* EMS 4.0 functions only and are not */
- #define EMS_BadHandle 0x83 /* supported by this library. See the EMS */
- #define EMS_BadFun 0x84 /* spec for further info. */
- #define EMS_NoHandles 0x85 /*----------------------------------------*/
- #define EMS_MapErr 0x86
- #define EMS_NotTotal 0x87
- #define EMS_NotFree 0x88
- #define EMS_NotZero 0x89
- #define EMS_BadPage 0x8A
- #define EMS_BadPhys 0x8B
- #define EMS_SaveFull 0x8C
- #define EMS_SaveDup 0x8D
- #define EMS_NoSave 0x8E
- #define EMS_BadSub 0x8F
-
- #define XMS_BadFun 0x80 /*- XMS error-codes ----------------------*/
- #define XMS_Vdisk 0x81 /* see the XMS spec for further info. */
- #define XMS_A20Err 0x82 /*----------------------------------------*/
- #define XMS_DrivErr 0x8E
- #define XMS_Fatal 0x8F
- #define XMS_NoHMA 0x90
- #define XMS_HMABusy 0x91
- #define XMS_HMASmall 0x92
- #define XMS_HMAFree 0x93
- #define XMS_NoXMS 0xA0
- #define XMS_NoHandle 0xA1
- #define XMS_BadHandle 0xA2
- #define XMS_BadSrc 0xA3
- #define XMS_BadSOff 0xA4
- #define XMS_BadDst 0xA5
- #define XMS_BadDOff 0xA6
- #define XMS_BadLen 0xA7
- #define XMS_BadOver 0xA8
- #define XMS_Parity 0xA9
- #define XMS_NotLock 0xAA
- #define XMS_IsLock 0xAB
- #define XMS_LockOvr 0xAC
- #define XMS_LockFail 0xAD
- #define XMS_SmallUMB 0xB0
- #define XMS_NoUMB 0xB1
- #define XMS_BadUMBSeg 0xB2
-
- /*------------------[ Data objects and access macros ]------------------*/
-
- TYP DwdT _AdrT; /* 32-bit addresses */
- TYP IntT _HdlT; /* EMS/XMS handles */
- TYP struct _Mem _MemT;
- TYP WrdT _SegT, FAR *_SegFP; /* segment addresses */
- TYP struct _Xms _XmsT, FAR *_XmsFP;
-
- struct _Mem /* -[ Memory-control object ]----*/
- { BytT mMflg; /* 00|00 : Memory flags */
- BytT mDpro; /* 01|01 : DPMI Processor */
- WrdT mDflg; /* 02|02 : DPMI Flags */
- DwdT mDent; /* 04|04 : DPMI entry point */
- WrdT mDver; /* 08|08 : DPMI version */
- WrdT mVver; /* 0A|0A : VCPI Version */
- WrdT mEseg; /* 0C|0C : EMS Base Segment */
- WrdT mEver; /* 0E|0E : EMS Version */
- WrdT mEfre; /* 10|10 : EMS Free (16kb page) */
- WrdT mEtot; /* 12|12 : EMS Total (16kb page) */
- BytT mEerr; /* 14|14 : EMS Error Code */
- BytT mXerr; /* 15|15 : XMS Error Code */
- WrdT mXver; /* 16|16 : XMS Version */
- DwdT mXent; /* 18|18 : XMS Entry Point */
- WrdT mXint; /* 1C|1C : XMS Internal Version */
- WrdT mHfre; /* 1E|1E : HMA free (para) */
- WrdT mXtot; /* 20|20 : XMS total free (1k) */
- WrdT mXlrg; /* 22|22 : XMS largest free (1k) */
- WrdT mUfre; /* 24|24 : Largest available UMB */
- }; /* 26|26 ]-----------------------*/
-
- GBL _MemT CDC _MemCtl; /*- global memory-control object ---------*/
- #define MemMflg (_MemCtl.mMflg) /* Memory Flags */
- #define MemDPMI (0 != (MemMflg & MEM_DPMI)) /* DPMI installed */
- #define MemVCPI (0 != (MemMflg & MEM_VCPI)) /* VCPI installed */
- #define MemEMS (0 != (MemMflg & MEM_EMS)) /* EMS installed */
- #define MemXMS (0 != (MemMflg & MEM_XMS)) /* XMS installed */
- #define MemHMA (0 != (MemMflg & MEM_HMA)) /* HMA installed */
- #define MemDpro (_MemCtl.mDpro) /* DPMI Processor */
- #define MemD286 (0x02 == MemDpro) /* 286 */
- #define MemD386 (0x03 == MemDpro) /* 386 */
- #define MemD486 (0x04 == MemDpro) /* 486 */
- #define MemDflg (_MemCtl.mDflg) /* DPMI Flags */
- #define MemDf32 (1 = MemDflg) /* 32 Bit Support */
- #define MemDent (_MemCtl.mDent) /* DPMI entry point */
- #define MemDver (_MemCtl.mDver) /* DPMI version */
- #define MemVver (_MemCtl.mVver) /* VCPI Version */
- #define MemEseg (_MemCtl.mEseg) /* EMS Base Segment */
- #define MemEver (_MemCtl.mEver) /* EMS Version */
- #define MemEfre (_MemCtl.mEfre) /* EMS Free (16k page) */
- #define MemEtot (_MemCtl.mEtot) /* EMS Total (16k page) */
- #define MemEerr (_MemCtl.mEerr) /* EMS Error Code */
- #define MemXerr (_MemCtl.mXerr) /* XMS Error Code */
- #define MemXver (_MemCtl.mXver) /* XMS Version */
- #define MemXent (_MemCtl.mXent) /* XMS Entry Point */
- #define MemXint (_MemCtl.mXint) /* XMS Internal Version */
- #define MemHfre (_MemCtl.mHfre) /* HMA free (para) */
- #define MemXtot (_MemCtl.mXtot) /* XMS total free (1k) */
- #define MemXlrg (_MemCtl.mXlrg) /* XMS largest free (1k)*/
- #define MemUfre (_MemCtl.mUfre) /* Largest free UMB */
-
- struct _Xms /*-[ XMS Move Struct ]-----*/
- { DwdT xSlen; /* 00|00 : Length */
- _HdlT xShdl; /* 04|04 : Source handle */
- _AdrT xSptr; /* 06|06 : Source pointer */
- _HdlT xTdhl; /* 0A|0A : Target handle */
- _AdrT xTptr; /* 0C|0C : Target pointer */
- }; /* 10|10 ]-----------------*/
- #define XmsSlen(x) ((x)->xSlen)
- #define XmsShdl(x) ((x)->xShdl)
- #define XmsSptr(x) ((x)->xSptr)
- #define XmsTdhl(x) ((x)->xTdhl)
- #define XmsTptr(x) ((x)->xTptr)
-
- /*------------------------[ Function Prototypes ]-----------------------*/
- #ifdef __cplusplus
- extern "C" {
- #endif
- /*- EMS functions ---------------*/
- _HdlT PAS EMSalloc(IntT np); /* allocate pages */
- IntT PAS EMSfree(_HdlT eh); /* free handle's pages */
- ChrFP PAS EMSgetnam(_HdlT eh, /* get handle name */
- ChrFP np);
- IntT PAS EMScount(NOARG); /* get handle count */
- IntT PAS EMSpages(_HdlT eh); /* get handle's page count */
- IntT PAS EMSmap(_HdlT eh, IntT pp, /* map physical to logical pages */
- IntT lp);
- IntT PAS EMSquery(NOARG); /* get free page count */
- IntT PAS EMSrest(_HdlT eh); /* restore pages */
- IntT PAS EMSsave(_HdlT eh); /* save pages */
- IntT PAS EMSsetnam(_HdlT eh, /* set handle name */
- ChrFP np);
- IntT PAS EMSstat(NOARG); /* get EMS status */
- /*- UMB functions ---------------*/
- IntT PAS UMBalloc(WrdT np, /* allocate <np> para UMB */
- _SegFP ps);
- IntT PAS UMBfree(_SegT ps); /* free UMB */
- /*- Memory system ---------------*/
- VOID PAS MemInit(NOARG); /* initialize */
- VOID MemTerm(NOARG); /* terminate */
- /*- XMS A20-line functions ------*/
- IntT PAS _A20_LD(NOARG); /* local disable */
- IntT PAS _A20_LE(NOARG); /* local enable */
- IntT PAS _A20chk(NOARG); /* check status */
- IntT PAS _A20dis(NOARG); /* global disable */
- IntT PAS _A20ena(NOARG); /* global enable */
- /*- XMS HMA functions -----------*/
- IntT PAS HMAalloc(NOARG); /* allocate */
- IntT PAS HMAfree(NOARG); /* free */
- /*- XMS functions ---------------*/
- _HdlT PAS XMSalloc(WrdT nk); /* allocate <nk> kb */
- IntT PAS XMScopy(_XmsFP xp); /* copy/move */
- IntT PAS XMSfree(_HdlT xh); /* free */
- IntT PAS XMSavail(NOARG); /* get available kb */
- IntT PAS XMSquery(_HdlT xh); /* query handle */
- _AdrT PAS XMSlock(_HdlT xh); /* lock handle */
- IntT PAS XMSrealloc(_HdlT xh, /* reallocate */
- WrdT ns);
- IntT PAS XMSunlock(_HdlT xh); /* unlock handle */
- # define MemTerm()
- #ifdef __cplusplus
- }
- #endif
- #endif /* _TCXLmem_ : End of <TCXLmem.h> */